import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
import plotly.express as px
import seaborn as sns # biblioteca de graficos
import matplotlib.pyplot as plt # biblioteca de graficos
# Carregar base de dados
df = pd.read_excel(r'C:\Users\Samsung\Desktop\TREINAMENTO\formulario google\Pesquisa sobre Mercado de trabalho (respostas).xlsx')
# tratar base de dados
df = df.rename(columns={'Qual a sua idade?': 'Idade', 'Qual estado você trabalha?': 'Estado',
'Como você chega até seu local de trabalho?': 'Meio_tranporte',
'Quanto tempo em média leva para chegar até o local de trabalho?': 'Tempo_Deslocamento',
'Qual sua renda mensal?': 'Renda_mensal', 'Qual sua expectativa de salário para daqui a 5 anos?': 'Expectativa_salarial',
'Você possui outra fonte de renda além de seu trabalho? ': 'Renda_extra', 'Vocé é ansioso (a) ?': 'Ansioso',
'Se sim, isso te afeta no dia a dia de trabalho?': 'Ansiendade_afeta', 'Você acredita que o lider/gestor afeta seu desenvolvimento e desempenho?':
'Desempelho_lider', 'Você se considera um profissional com autonomia?\n\nUma pessoa autônoma no trabalho é aquela que tem certa liberdade para agir onde trabalha. Isso não significa que só faça o que quer e quando quer, mas que pode cumprir suas tarefas de acordo com a sua autogestão.':
'autonomo', 'Você se considera um profissional generalista ou especialista?\n\nO profissional generalista domina diversos assuntos dentro de várias áreas de atuação. Já o especialista domina tudo sobre uma área específica de atuação': 'Classificacão',
'Qual o tempo máximo que já ficou em um emprego/trabalho?': 'Tempo_carteira', 'Nos dias atuais, acredita ser fácil trocar de emprego?': 'Faci_relocacao', 'Qual sua área de atuação?\nExempo: Com uma palavra como: Logistica, Vendas, Limpeza, Administração , TI entre outras...':
'Area', 'Você possui outra fonte de renda além de seu trabalho?': 'Renda_extra', 'Acredita ganhar o suficiente no emprego/trabalho atual?\n\n trabalho está ligado a objetivos e realizações profissionais, emprego é simplesmente uma forma de conseguir renda':
'Conformidade_salario', 'Procura buscar conhecimento extra para que seus objetivos profissionais sejam alcançados?': 'atv_extra', 'Com palavras chaves, oque te motivou sair do último emprego?\nExempo: gestão desqualificada, exploração, remuneração entre outras':
'mud_emprego', 'O que te motiva entrar em uma empresa?': 'Motiv_entrar', 'O que te motiva sair em uma empresa?': 'Motiv_sair', 'Qual seu nível de maior escolaridade concluída?':'Escolaridade', 'Quantas vezes ja mudou de emprego?': 'Mudanca_emprego'})
# tratar string
df["Expectativa_salarial"] = df["Expectativa_salarial"].astype(int)
df.Renda_mensal = df.Renda_mensal.replace('Entre R$ 2.000,00 a R$ 4000,00', 'Entre R$ 2.001,00 a R$ 4000,00')
df.loc[df.Ansioso == 'Não', ['Ansiendade_afeta']] = 'Não sou ansioso'
df.loc[(df.Ansiendade_afeta == 'Não sou ansioso') & (df.Ansioso == 'Sim'), ['Ansiendade_afeta']] = 'Não'
df.Area = df.Area.str.strip()
df.Escolaridade = df.Escolaridade.str.strip()
df.loc[(df.Escolaridade == 'Superior incompleto') | (df.Escolaridade == 'Ensino superior incompleto') | (df.Escolaridade == 'Superior incompleto') | (df.Escolaridade == 'Ensino superior incompleto') | (df.Escolaridade == 'Estou cursando o ensino superior') | (df.Escolaridade == 'Ensino superior incompleto'), ['Escolaridade']] = 'Ensino Médio'
df.loc[(df.Meio_tranporte == 'Remoto'), ['Meio_tranporte']] = 'home office'
df = df.drop(columns=['Carimbo de data/hora', 'Endereço de e-mail'])
# visualizar base de dados
df.head(5)
| Idade | Estado | Meio_tranporte | Tempo_Deslocamento | Area | Renda_mensal | Expectativa_salarial | Renda_extra | Conformidade_salario | Ansioso | ... | Escolaridade | Motiv_entrar | Motiv_sair | mud_emprego | Faci_relocacao | Mudanca_emprego | Tempo_carteira | Classificacão | autonomo | Desempelho_lider | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Entre 19 a 25 anos | GO | Condução própria | home office | Licenciatura | Estou desempregado | 7000 | Sim | Estou desempregado | Sim | ... | Ensino Médio | Salário, Inclusão, Valores, Beneficios | Salário, Propósito, Falta de reconhecimento, E... | Nunca trabalhei | Não | Até 3 vezes | Menos de 6 meses | Generalista | Sim | Sim |
| 1 | Entre 26 a 30 anos | GO | Transporte da empresa | Meia hora | Outras | Menos de R$ 1.500,00 | 8000 | Não | Não | Sim | ... | Ensino Superior | Salário, Perspectivas de carreira | Falta de reconhecimento | Gestão desqualificada | Não | De 4 a 8 vezes | Entre 12 meses a 24 meses | Generalista | Não | Sim |
| 2 | Entre 31 a 40 anos | GO | Condução própria | Meia hora | Vendas | Entre R$ 1.500,00 e R$ 2.000,00 | 2500 | Não | Sim | Sim | ... | Ensino Médio | Perspectivas de carreira | Valores | Gestão desqualificado | Não | Até 3 vezes | Entre 12 meses a 24 meses | Especialista | Sim | Em partes |
| 3 | Entre 19 a 25 anos | GO | Transporte da empresa | Meia hora | Alimentos | Menos de R$ 1.500,00 | 2500 | Não | Não | Sim | ... | Ensino Médio | Salário, Perspectivas de carreira, Beneficios | Falta de reconhecimento, Exploração de mão de ... | Outra proposta | Não | Até 3 vezes | Entre 6 a 12 meses | Generalista | Talvez | Em partes |
| 4 | Entre 31 a 40 anos | GO | Condução própria | Meia hora | Entregadora | Menos de R$ 1.500,00 | 5000 | Não | Não | Sim | ... | Ensino Médio | Beneficios | Desvio de função, Falta de reconhecimento, Exp... | Pandemia | Não | De 4 a 8 vezes | Mais de 36 meses | Generalista | Não | Sim |
5 rows × 22 columns
# verificar informações da base de dados
N_pesquisa = len(df.Idade)
df.info()
<class 'pandas.core.frame.DataFrame'> RangeIndex: 61 entries, 0 to 60 Data columns (total 22 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 Idade 61 non-null object 1 Estado 61 non-null object 2 Meio_tranporte 61 non-null object 3 Tempo_Deslocamento 61 non-null object 4 Area 61 non-null object 5 Renda_mensal 61 non-null object 6 Expectativa_salarial 61 non-null int32 7 Renda_extra 61 non-null object 8 Conformidade_salario 61 non-null object 9 Ansioso 61 non-null object 10 Ansiendade_afeta 61 non-null object 11 atv_extra 61 non-null object 12 Escolaridade 61 non-null object 13 Motiv_entrar 61 non-null object 14 Motiv_sair 61 non-null object 15 mud_emprego 61 non-null object 16 Faci_relocacao 61 non-null object 17 Mudanca_emprego 61 non-null object 18 Tempo_carteira 61 non-null object 19 Classificacão 61 non-null object 20 autonomo 61 non-null object 21 Desempelho_lider 61 non-null object dtypes: int32(1), object(21) memory usage: 10.4+ KB
# DADOS estatístico string object, numero de resposta e sua moda.
df.select_dtypes('object').describe().transpose()
| count | unique | top | freq | |
|---|---|---|---|---|
| Idade | 61 | 5 | Entre 19 a 25 anos | 30 |
| Estado | 61 | 6 | GO | 55 |
| Meio_tranporte | 61 | 5 | Condução própria | 40 |
| Tempo_Deslocamento | 61 | 5 | Meia hora | 47 |
| Area | 61 | 49 | Vendas | 9 |
| Renda_mensal | 61 | 5 | Menos de R$ 1.500,00 | 22 |
| Renda_extra | 61 | 2 | Não | 46 |
| Conformidade_salario | 61 | 3 | Não | 36 |
| Ansioso | 61 | 2 | Sim | 53 |
| Ansiendade_afeta | 61 | 3 | Sim | 38 |
| atv_extra | 61 | 2 | Sim | 58 |
| Escolaridade | 61 | 6 | Ensino Médio | 29 |
| Motiv_entrar | 61 | 28 | Perspectivas de carreira | 13 |
| Motiv_sair | 61 | 33 | Falta de reconhecimento | 11 |
| mud_emprego | 61 | 47 | Remuneração | 8 |
| Faci_relocacao | 61 | 2 | Não | 50 |
| Mudanca_emprego | 61 | 3 | Até 3 vezes | 45 |
| Tempo_carteira | 61 | 5 | Mais de 36 meses | 29 |
| Classificacão | 61 | 2 | Generalista | 44 |
| autonomo | 61 | 3 | Sim | 40 |
| Desempelho_lider | 61 | 3 | Sim | 31 |
# contagem e analise exploratoria de dados
print("faixa etária de idade das amostras")
print(df.Idade.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("contar numero de Estado onde as amostras trabalham ")
print(df.Estado.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Meio de transporte que as amostras usa para ir trabalhar")
print(df.Meio_tranporte.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Tempo de deslocamento que as amostra usa para irem trabalhar")
print(df.Tempo_Deslocamento.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Area de atuação das amostras")
print(df.Area.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Faixa salarial das amostras")
print(df.Renda_mensal.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Faixa de expectativa salarial após 5 anos")
print(df.Expectativa_salarial.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Número de amostra que cotém renda extra")
print(df.Renda_extra.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Número de amostra que acredita receber o salario suficiente")
print(df.Conformidade_salario.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Número de amostra que são ansiosos")
print(df.Ansioso.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Número de amostra que são afetada pela ansiendade")
print(df.Ansiendade_afeta.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Número de amostra que buscam aprimorar conhecimento")
print(df.atv_extra.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Grau de escoladirade das amostra")
print(df.Escolaridade.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Numero de amostra que acreditar sobre facilidade de relocação de emprego")
print(df.Faci_relocacao .value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Numero de vez que a amostra mudou de emprego")
print(df.Mudanca_emprego.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Tempo de casa das amostra")
print(df.Tempo_carteira.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Classificação da amostra")
print(df.Classificacão.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Numero de funcionario autonomo")
print(df.autonomo.value_counts(normalize=True).map("{:.1%}".format))
print("-"*60)
print("Numero sobre desemprenho afetado pela liderança")
print(df.Desempelho_lider.value_counts(normalize=True).map("{:.1%}".format))
faixa etária de idade das amostras Entre 19 a 25 anos 49.2% Entre 26 a 30 anos 24.6% Entre 31 a 40 anos 19.7% + 41 anos 4.9% Entre 16 a 18 anos 1.6% Name: Idade, dtype: object ------------------------------------------------------------ contar numero de Estado onde as amostras trabalham GO 90.2% MG 3.3% CE 1.6% SC 1.6% SP 1.6% Df 1.6% Name: Estado, dtype: object ------------------------------------------------------------ Meio de transporte que as amostras usa para ir trabalhar Condução própria 65.6% Andando 16.4% Transporte da empresa 13.1% home office 3.3% Transporte público 1.6% Name: Meio_tranporte, dtype: object ------------------------------------------------------------ Tempo de deslocamento que as amostra usa para irem trabalhar Meia hora 77.0% Uma hora 13.1% home office 6.6% Mais de duas horas 1.6% Uma hora e meia 1.6% Name: Tempo_Deslocamento, dtype: object ------------------------------------------------------------ Area de atuação das amostras Vendas 14.8% administração 3.3% Financeiro 3.3% Limpeza 3.3% RH 3.3% Emplacamento 1.6% Motorista 1.6% Professora 1.6% Professor 1.6% Design de sobrancelha 1.6% Empresa Alimentícia 1.6% Recepção 1.6% Financeira 1.6% TI, Ensino de idiomas 1.6% Licenciatura 1.6% Beleza 1.6% Automação 1.6% Corretora 1.6% Secretaria 1.6% Lavador 1.6% Caixa executivo 1.6% Auxiliar de produção 1.6% Industria 1.6% Auxiliar de sala 1.6% Turismo 1.6% Estudante 1.6% Jurídica 1.6% Qualidade 1.6% Outras 1.6% Alimentos 1.6% Entregadora 1.6% Operador de produção 1.6% Zootecnia 1.6% Adm, manutenção 1.6% Pintura 1.6% Carpinteiro 1.6% Médico veterinário 1.6% Atendimento 1.6% Auxiliar de secretaria 1.6% Representante comercial 1.6% Logística 1.6% TI 1.6% Agropecuária 1.6% Educação 1.6% Reposição 1.6% Administrativo 1.6% Serviço público 1.6% Domestica e babá 1.6% Administração 1.6% Name: Area, dtype: object ------------------------------------------------------------ Faixa salarial das amostras Menos de R$ 1.500,00 36.1% Entre R$ 1.500,00 e R$ 2.000,00 24.6% Entre R$ 2.001,00 a R$ 4000,00 23.0% Estou desempregado 8.2% Entre R$ 4.001,00 a R$ 10.000,00 8.2% Name: Renda_mensal, dtype: object ------------------------------------------------------------ Faixa de expectativa salarial após 5 anos 5000 18.0% 10000 18.0% 3000 8.2% 7000 6.6% 4000 6.6% 2500 4.9% 6000 4.9% 15000 4.9% 8000 4.9% 2000 4.9% 500000 3.3% 9000 1.6% 2400 1.6% 3500 1.6% 1000000 1.6% 2100 1.6% 2300 1.6% 12000 1.6% 600000 1.6% 4500 1.6% Name: Expectativa_salarial, dtype: object ------------------------------------------------------------ Número de amostra que cotém renda extra Não 75.4% Sim 24.6% Name: Renda_extra, dtype: object ------------------------------------------------------------ Número de amostra que acredita receber o salario suficiente Não 59.0% Sim 32.8% Estou desempregado 8.2% Name: Conformidade_salario, dtype: object ------------------------------------------------------------ Número de amostra que são ansiosos Sim 86.9% Não 13.1% Name: Ansioso, dtype: object ------------------------------------------------------------ Número de amostra que são afetada pela ansiendade Sim 62.3% Não 24.6% Não sou ansioso 13.1% Name: Ansiendade_afeta, dtype: object ------------------------------------------------------------ Número de amostra que buscam aprimorar conhecimento Sim 95.1% Não me sobra tempo 4.9% Name: atv_extra, dtype: object ------------------------------------------------------------ Grau de escoladirade das amostra Ensino Médio 47.5% Ensino Superior 27.9% Ensino Técnico 14.8% Ensino fundamental 4.9% Especialista 3.3% Mestrado 1.6% Name: Escolaridade, dtype: object ------------------------------------------------------------ Numero de amostra que acreditar sobre facilidade de relocação de emprego Não 82.0% Sim 18.0% Name: Faci_relocacao, dtype: object ------------------------------------------------------------ Numero de vez que a amostra mudou de emprego Até 3 vezes 73.8% De 4 a 8 vezes 24.6% De 9 a 12 vezes 1.6% Name: Mudanca_emprego, dtype: object ------------------------------------------------------------ Tempo de casa das amostra Mais de 36 meses 47.5% Entre 12 meses a 24 meses 19.7% Entre 24 meses a 36 meses 14.8% Entre 6 a 12 meses 11.5% Menos de 6 meses 6.6% Name: Tempo_carteira, dtype: object ------------------------------------------------------------ Classificação da amostra Generalista 72.1% Especialista 27.9% Name: Classificacão, dtype: object ------------------------------------------------------------ Numero de funcionario autonomo Sim 65.6% Talvez 18.0% Não 16.4% Name: autonomo, dtype: object ------------------------------------------------------------ Numero sobre desemprenho afetado pela liderança Sim 50.8% Em partes 32.8% Não 16.4% Name: Desempelho_lider, dtype: object
# biblioteca para guardar funções para o decorrer do código
def wordtex(coluna):
text = list(coluna)
text = " ".join(a for a in text)
# lista de stopword
stopwords = set(STOPWORDS)
stopwords.update(["da", "meu", "em", "você", "de", "ao", "os", "falta"])
# gerar uma wordcloud
wordcloud = WordCloud(stopwords=stopwords,
background_color="black",
width=1600, height=800).generate(text)
# mostrar a imagem final
fig, ax = plt.subplots(figsize=(10,6))
ax.imshow(wordcloud, interpolation='bilinear')
ax.set_axis_off()
plt.imshow(wordcloud);
wordcloud.to_file("airbnb_summary_wordcloud.png")
# definir função para diagrama de caixa
def diagrama_cx(coluna):
fig, (ax1, ax2) = plt.subplots(1, 2) # configuração do grafico
fig.set_size_inches(15, 5) # configuração do grafico
sns.boxplot(x=coluna, ax=ax1)
ax2.set_xlim(limites(coluna))
sns.boxplot(x=coluna, ax=ax2)
# definir função para histrograma
def histrograma(coluna):
plt.figure(figsize=(15,5)) # configuração do grafico
sns.histplot(coluna, bins=50, kde=True) # grafico hitrograma
# definir limite para colunas
def limites(coluna):
q1 = coluna.quantile(0.25)
q3 = coluna.quantile(0.75)
amplitude = q3 - q1
return q1 - 1.5 * amplitude, q3 + 1.5 *amplitude
# definir função para excluir outliers
def excluir_outliers(base_d_dados, nome_coluna):
qtd_linha = base_d_dados.shape[0]
lim_inf, lim_sup = limites(base_d_dados[nome_coluna])
base_d_dados = base_d_dados.loc[(base_d_dados[nome_coluna] >= lim_inf) & (base_d_dados[nome_coluna] <= lim_sup), :]
linhas_removidas = qtd_linha - base_d_dados.shape[0]
return base_d_dados, linhas_removidas
def grafico_barra(coluna):
plt.figure(figsize=(15, 5))
ax = sns.barplot(x=coluna.value_counts().index, y=coluna.value_counts())
ax.set_xlim(limites(coluna))
def valuecout (tabela, coluna):
print(f" total {len(tabela[coluna])}")
print(tabela[coluna].value_counts())
print('%'*60)
print(tabela[coluna].value_counts(normalize=True).map("{:.1%}".format))
print('-'*60)
# nuvem de palavra para analisar os principais motivos que levam as amostras a entrar em uma empresa
# obs.: quanto maior a palavra mais vezes a palavra se repete
wordtex(df.Motiv_entrar)
# nuvem de palavra para analisar os principais motivos que levam as amostras a sair de uma empresa
wordtex(df.Motiv_sair)
# nuvem de palavra para analisar os principais motivos que levaram as amostras a mudarem de emprego
wordtex(df.mud_emprego)
# nuvem de palavra para analisar area de atuação de cada amostra
wordtex(df.Area)
# separar data base com colunas para importante para chegar ao objetivo proposto
df2 = pd.DataFrame()
df2['escolaridade'] = df.Escolaridade
df2["faixa_idade"] = df.Idade
df2['faixa_salarial'] = df.Renda_mensal
df2['renda_extra'] = df.Renda_extra
df2["espectativa"] = df.Expectativa_salarial
# visualizar base de dados para análise
df2
| escolaridade | faixa_idade | faixa_salarial | renda_extra | espectativa | |
|---|---|---|---|---|---|
| 0 | Ensino Médio | Entre 19 a 25 anos | Estou desempregado | Sim | 7000 |
| 1 | Ensino Superior | Entre 26 a 30 anos | Menos de R$ 1.500,00 | Não | 8000 |
| 2 | Ensino Médio | Entre 31 a 40 anos | Entre R$ 1.500,00 e R$ 2.000,00 | Não | 2500 |
| 3 | Ensino Médio | Entre 19 a 25 anos | Menos de R$ 1.500,00 | Não | 2500 |
| 4 | Ensino Médio | Entre 31 a 40 anos | Menos de R$ 1.500,00 | Não | 5000 |
| ... | ... | ... | ... | ... | ... |
| 56 | Ensino Superior | Entre 19 a 25 anos | Menos de R$ 1.500,00 | Sim | 5000 |
| 57 | Ensino Técnico | Entre 31 a 40 anos | Menos de R$ 1.500,00 | Sim | 6000 |
| 58 | Ensino Técnico | Entre 26 a 30 anos | Entre R$ 1.500,00 e R$ 2.000,00 | Não | 4500 |
| 59 | Ensino Superior | Entre 26 a 30 anos | Entre R$ 1.500,00 e R$ 2.000,00 | Não | 10000 |
| 60 | Ensino Médio | Entre 26 a 30 anos | Menos de R$ 1.500,00 | Não | 3000 |
61 rows × 5 columns
# Analisa faixa de idade, salarial e de renda extra em relação à nivel de Ensino Médio
em = df2.loc[df2.escolaridade == 'Ensino Médio']
valuecout(em, 'faixa_idade')
valuecout(em, 'faixa_salarial')
valuecout(em, 'renda_extra')
total 29 Entre 19 a 25 anos 16 Entre 26 a 30 anos 6 Entre 31 a 40 anos 5 + 41 anos 1 Entre 16 a 18 anos 1 Name: faixa_idade, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Entre 19 a 25 anos 55.2% Entre 26 a 30 anos 20.7% Entre 31 a 40 anos 17.2% + 41 anos 3.4% Entre 16 a 18 anos 3.4% Name: faixa_idade, dtype: object ------------------------------------------------------------ total 29 Menos de R$ 1.500,00 13 Entre R$ 1.500,00 e R$ 2.000,00 9 Entre R$ 2.001,00 a R$ 4000,00 4 Estou desempregado 3 Name: faixa_salarial, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Menos de R$ 1.500,00 44.8% Entre R$ 1.500,00 e R$ 2.000,00 31.0% Entre R$ 2.001,00 a R$ 4000,00 13.8% Estou desempregado 10.3% Name: faixa_salarial, dtype: object ------------------------------------------------------------ total 29 Não 23 Sim 6 Name: renda_extra, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Não 79.3% Sim 20.7% Name: renda_extra, dtype: object ------------------------------------------------------------
# Analisa faixa de idade, salarial e de renda extra em relação à nivel de Ensino Técnico
et = df2.loc[df2.escolaridade == 'Ensino Técnico']
valuecout(et, 'faixa_idade')
valuecout(et, 'faixa_salarial')
valuecout(et, 'renda_extra')
total 9 Entre 19 a 25 anos 6 Entre 31 a 40 anos 2 Entre 26 a 30 anos 1 Name: faixa_idade, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Entre 19 a 25 anos 66.7% Entre 31 a 40 anos 22.2% Entre 26 a 30 anos 11.1% Name: faixa_idade, dtype: object ------------------------------------------------------------ total 9 Menos de R$ 1.500,00 5 Entre R$ 1.500,00 e R$ 2.000,00 2 Estou desempregado 1 Entre R$ 2.001,00 a R$ 4000,00 1 Name: faixa_salarial, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Menos de R$ 1.500,00 55.6% Entre R$ 1.500,00 e R$ 2.000,00 22.2% Estou desempregado 11.1% Entre R$ 2.001,00 a R$ 4000,00 11.1% Name: faixa_salarial, dtype: object ------------------------------------------------------------ total 9 Não 5 Sim 4 Name: renda_extra, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Não 55.6% Sim 44.4% Name: renda_extra, dtype: object ------------------------------------------------------------
# Analisa faixa de idade, salarial e de renda extra em relação à nivel do Ensino Superior
es = df2.loc[df2.escolaridade == 'Ensino Superior']
valuecout(es, 'faixa_idade')
valuecout(es, 'faixa_salarial')
valuecout(es, 'renda_extra')
total 17 Entre 19 a 25 anos 8 Entre 26 a 30 anos 6 Entre 31 a 40 anos 3 Name: faixa_idade, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Entre 19 a 25 anos 47.1% Entre 26 a 30 anos 35.3% Entre 31 a 40 anos 17.6% Name: faixa_idade, dtype: object ------------------------------------------------------------ total 17 Entre R$ 2.001,00 a R$ 4000,00 8 Entre R$ 1.500,00 e R$ 2.000,00 3 Entre R$ 4.001,00 a R$ 10.000,00 3 Menos de R$ 1.500,00 2 Estou desempregado 1 Name: faixa_salarial, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Entre R$ 2.001,00 a R$ 4000,00 47.1% Entre R$ 1.500,00 e R$ 2.000,00 17.6% Entre R$ 4.001,00 a R$ 10.000,00 17.6% Menos de R$ 1.500,00 11.8% Estou desempregado 5.9% Name: faixa_salarial, dtype: object ------------------------------------------------------------ total 17 Não 13 Sim 4 Name: renda_extra, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Não 76.5% Sim 23.5% Name: renda_extra, dtype: object ------------------------------------------------------------
# Analisa faixa de idade, salarial e de renda extra em relação à nivel do Ensino fundamental
ef = df2.loc[df2.escolaridade == 'Ensino fundamental']
valuecout(ef, 'faixa_idade')
valuecout(ef, 'faixa_salarial')
valuecout(ef, 'renda_extra')
total 3 Entre 31 a 40 anos 1 + 41 anos 1 Entre 26 a 30 anos 1 Name: faixa_idade, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Entre 31 a 40 anos 33.3% + 41 anos 33.3% Entre 26 a 30 anos 33.3% Name: faixa_idade, dtype: object ------------------------------------------------------------ total 3 Menos de R$ 1.500,00 2 Entre R$ 1.500,00 e R$ 2.000,00 1 Name: faixa_salarial, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Menos de R$ 1.500,00 66.7% Entre R$ 1.500,00 e R$ 2.000,00 33.3% Name: faixa_salarial, dtype: object ------------------------------------------------------------ total 3 Não 3 Name: renda_extra, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Não 100.0% Name: renda_extra, dtype: object ------------------------------------------------------------
# Analisa faixa de idade, salarial e de renda extra em relação à nivel do Mestrado
m = df2.loc[df2.escolaridade == 'Mestrado']
valuecout(m, 'faixa_idade')
valuecout(m, 'faixa_salarial')
valuecout(m, 'renda_extra')
total 1 + 41 anos 1 Name: faixa_idade, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + 41 anos 100.0% Name: faixa_idade, dtype: object ------------------------------------------------------------ total 1 Entre R$ 4.001,00 a R$ 10.000,00 1 Name: faixa_salarial, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Entre R$ 4.001,00 a R$ 10.000,00 100.0% Name: faixa_salarial, dtype: object ------------------------------------------------------------ total 1 Não 1 Name: renda_extra, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Não 100.0% Name: renda_extra, dtype: object ------------------------------------------------------------
# Analisa faixa de idade, salarial e de renda extra em relação à nivel do Especialista
m = df2.loc[df2.escolaridade == 'Especialista']
valuecout(m, 'faixa_idade')
valuecout(m, 'faixa_salarial')
valuecout(m, 'renda_extra')
total 2 Entre 26 a 30 anos 1 Entre 31 a 40 anos 1 Name: faixa_idade, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Entre 26 a 30 anos 50.0% Entre 31 a 40 anos 50.0% Name: faixa_idade, dtype: object ------------------------------------------------------------ total 2 Entre R$ 4.001,00 a R$ 10.000,00 1 Entre R$ 2.001,00 a R$ 4000,00 1 Name: faixa_salarial, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Entre R$ 4.001,00 a R$ 10.000,00 50.0% Entre R$ 2.001,00 a R$ 4000,00 50.0% Name: faixa_salarial, dtype: object ------------------------------------------------------------ total 2 Sim 1 Não 1 Name: renda_extra, dtype: int64 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Sim 50.0% Não 50.0% Name: renda_extra, dtype: object ------------------------------------------------------------
# filtrar a base de dados para analisar somente as amostra que são ansiosa
ans = df.loc[df.Ansioso == 'Sim']
# visualizar base de dados
ans.head(5)
| Idade | Estado | Meio_tranporte | Tempo_Deslocamento | Area | Renda_mensal | Expectativa_salarial | Renda_extra | Conformidade_salario | Ansioso | ... | Escolaridade | Motiv_entrar | Motiv_sair | mud_emprego | Faci_relocacao | Mudanca_emprego | Tempo_carteira | Classificacão | autonomo | Desempelho_lider | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Entre 19 a 25 anos | GO | Condução própria | home office | Licenciatura | Estou desempregado | 7000 | Sim | Estou desempregado | Sim | ... | Ensino Médio | Salário, Inclusão, Valores, Beneficios | Salário, Propósito, Falta de reconhecimento, E... | Nunca trabalhei | Não | Até 3 vezes | Menos de 6 meses | Generalista | Sim | Sim |
| 1 | Entre 26 a 30 anos | GO | Transporte da empresa | Meia hora | Outras | Menos de R$ 1.500,00 | 8000 | Não | Não | Sim | ... | Ensino Superior | Salário, Perspectivas de carreira | Falta de reconhecimento | Gestão desqualificada | Não | De 4 a 8 vezes | Entre 12 meses a 24 meses | Generalista | Não | Sim |
| 2 | Entre 31 a 40 anos | GO | Condução própria | Meia hora | Vendas | Entre R$ 1.500,00 e R$ 2.000,00 | 2500 | Não | Sim | Sim | ... | Ensino Médio | Perspectivas de carreira | Valores | Gestão desqualificado | Não | Até 3 vezes | Entre 12 meses a 24 meses | Especialista | Sim | Em partes |
| 3 | Entre 19 a 25 anos | GO | Transporte da empresa | Meia hora | Alimentos | Menos de R$ 1.500,00 | 2500 | Não | Não | Sim | ... | Ensino Médio | Salário, Perspectivas de carreira, Beneficios | Falta de reconhecimento, Exploração de mão de ... | Outra proposta | Não | Até 3 vezes | Entre 6 a 12 meses | Generalista | Talvez | Em partes |
| 4 | Entre 31 a 40 anos | GO | Condução própria | Meia hora | Entregadora | Menos de R$ 1.500,00 | 5000 | Não | Não | Sim | ... | Ensino Médio | Beneficios | Desvio de função, Falta de reconhecimento, Exp... | Pandemia | Não | De 4 a 8 vezes | Mais de 36 meses | Generalista | Não | Sim |
5 rows × 22 columns
# Analisa faixa de idade em relação se a ansiedade afeta ou não no dia-a-dia do trabalho
grafico = px.histogram(ans, x=['Idade'], color="Ansiendade_afeta", text_auto=True, color_discrete_sequence=["red", "black"])
grafico.show()
# Analisa faixa de escolaridade em relação se a ansiedade afeta ou não no dia-a-dia do trabalho
grafico = px.histogram(ans, x=['Escolaridade'], color="Ansiendade_afeta", text_auto=True, color_discrete_sequence=["black", "red"])
grafico.show()
# Separar base de dados com expectativa salarial, escolaridade para analisar ate chegar ao objetivo proposto
df_aux1 = pd.DataFrame()
df_aux1["expectativa_salarial"] = df.Expectativa_salarial
df_aux1["escolaridade"] = df.Escolaridade
df_aux1["idade"] = df.Idade
# visualizar base de dados
df_aux1.head(5)
| expectativa_salarial | escolaridade | idade | |
|---|---|---|---|
| 0 | 7000 | Ensino Médio | Entre 19 a 25 anos |
| 1 | 8000 | Ensino Superior | Entre 26 a 30 anos |
| 2 | 2500 | Ensino Médio | Entre 31 a 40 anos |
| 3 | 2500 | Ensino Médio | Entre 19 a 25 anos |
| 4 | 5000 | Ensino Médio | Entre 31 a 40 anos |
# ver outliers da coluna de expectativa salarial, onde sera retirado os outlier para não ter erro na análise
diagrama_cx(df_aux1.expectativa_salarial)
histrograma(df_aux1.expectativa_salarial)
# Deletar outliers
df_aux1, linhas_removida = excluir_outliers(df_aux1, "expectativa_salarial")
print('{} linhas removidas'.format(linhas_removida))
4 linhas removidas
# ver gráfico dados apos remover os outliers
diagrama_cx(df_aux1.expectativa_salarial)
histrograma(df_aux1.expectativa_salarial)
# visualisar as 5 primeiras linha da base de dados
df_aux1.head(5)
| expectativa_salarial | escolaridade | idade | |
|---|---|---|---|
| 0 | 7000 | Ensino Médio | Entre 19 a 25 anos |
| 1 | 8000 | Ensino Superior | Entre 26 a 30 anos |
| 2 | 2500 | Ensino Médio | Entre 31 a 40 anos |
| 3 | 2500 | Ensino Médio | Entre 19 a 25 anos |
| 4 | 5000 | Ensino Médio | Entre 31 a 40 anos |
# análise da média da expectativa salarial por escolaridade
df_aux3 = df_aux1.groupby('escolaridade')['expectativa_salarial'].mean().reset_index()
pd.set_option('display.precision', 2)
df_aux3
| escolaridade | expectativa_salarial | |
|---|---|---|
| 0 | Ensino Médio | 5257.69 |
| 1 | Ensino Superior | 8631.25 |
| 2 | Ensino Técnico | 4833.33 |
| 3 | Ensino fundamental | 4000.00 |
| 4 | Especialista | 10000.00 |
| 5 | Mestrado | 10000.00 |
# análise da média da expectativa salaria por idade
df_aux3 = df_aux1.groupby('idade')['expectativa_salarial'].mean().reset_index()
pd.set_option('display.precision', 2)
df_aux3
| idade | expectativa_salarial | |
|---|---|---|
| 0 | + 41 anos | 6666.67 |
| 1 | Entre 16 a 18 anos | 2000.00 |
| 2 | Entre 19 a 25 anos | 6526.67 |
| 3 | Entre 26 a 30 anos | 6071.43 |
| 4 | Entre 31 a 40 anos | 6388.89 |
df3 = pd.DataFrame()
df3["idade"] = df.Idade
df3["meio_traporte"] = df.Meio_tranporte
df3["deslocamento"] = df.Tempo_Deslocamento
df3['conf_salario'] = df.Conformidade_salario
df3["classificacao"] = df.Classificacão
df3['relocação'] = df.Mudanca_emprego
df3["autonomo"] = df.autonomo
df3["lideranca"] = df.Desempelho_lider
df3["espectativa"] = df_aux1.expectativa_salarial
df3['index'] = 1
df3.head(5)
| idade | meio_traporte | deslocamento | conf_salario | classificacao | relocação | autonomo | lideranca | espectativa | index | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | Entre 19 a 25 anos | Condução própria | home office | Estou desempregado | Generalista | Até 3 vezes | Sim | Sim | 7000.0 | 1 |
| 1 | Entre 26 a 30 anos | Transporte da empresa | Meia hora | Não | Generalista | De 4 a 8 vezes | Não | Sim | 8000.0 | 1 |
| 2 | Entre 31 a 40 anos | Condução própria | Meia hora | Sim | Especialista | Até 3 vezes | Sim | Em partes | 2500.0 | 1 |
| 3 | Entre 19 a 25 anos | Transporte da empresa | Meia hora | Não | Generalista | Até 3 vezes | Talvez | Em partes | 2500.0 | 1 |
| 4 | Entre 31 a 40 anos | Condução própria | Meia hora | Não | Generalista | De 4 a 8 vezes | Não | Sim | 5000.0 | 1 |
# Análise do tempo de deslocamento médio para se locomover ate o local de trabalho.
df3.groupby(['idade', 'deslocamento'])['index'].count().reset_index().transpose()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| idade | + 41 anos | + 41 anos | Entre 16 a 18 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 31 a 40 anos | Entre 31 a 40 anos | Entre 31 a 40 anos | Entre 31 a 40 anos |
| deslocamento | Meia hora | Uma hora | Meia hora | Mais de duas horas | Meia hora | Uma hora | home office | Meia hora | Uma hora | home office | Meia hora | Uma hora | Uma hora e meia | home office |
| index | 2 | 1 | 1 | 1 | 23 | 4 | 2 | 12 | 2 | 1 | 9 | 1 | 1 | 1 |
# Análise do meio de transporte para se locomover ate o local de trabalho
df3.groupby(['idade', 'meio_traporte'])['index'].count().reset_index().transpose()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| idade | + 41 anos | + 41 anos | Entre 16 a 18 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 31 a 40 anos | Entre 31 a 40 anos | Entre 31 a 40 anos | Entre 31 a 40 anos |
| meio_traporte | Andando | Condução própria | Condução própria | Andando | Condução própria | Transporte da empresa | Andando | Condução própria | Transporte da empresa | Transporte público | home office | Andando | Condução própria | Transporte da empresa | home office |
| index | 1 | 2 | 1 | 3 | 21 | 6 | 3 | 9 | 1 | 1 | 1 | 3 | 7 | 1 | 1 |
# Analise conformidade do salário em relação à idade
df3.groupby(['idade', 'conf_salario'])['index'].count().reset_index().transpose()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| idade | + 41 anos | + 41 anos | Entre 16 a 18 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 31 a 40 anos | Entre 31 a 40 anos |
| conf_salario | Não | Sim | Não | Estou desempregado | Não | Sim | Estou desempregado | Não | Sim | Não | Sim |
| index | 2 | 1 | 1 | 4 | 15 | 11 | 1 | 11 | 3 | 7 | 5 |
# Analise classificação especialista ou generalista por idade
df3.groupby(['idade', 'classificacao'])['index'].count().reset_index().transpose()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
|---|---|---|---|---|---|---|---|---|---|
| idade | + 41 anos | + 41 anos | Entre 16 a 18 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 31 a 40 anos | Entre 31 a 40 anos |
| classificacao | Especialista | Generalista | Especialista | Especialista | Generalista | Especialista | Generalista | Especialista | Generalista |
| index | 1 | 2 | 1 | 9 | 21 | 4 | 11 | 2 | 10 |
# Analise quantidade de vez de troca de emprego por idade
df3.groupby(['idade', 'relocação'])['index'].count().reset_index().transpose()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|---|
| idade | + 41 anos | + 41 anos | + 41 anos | Entre 16 a 18 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 31 a 40 anos | Entre 31 a 40 anos |
| relocação | Até 3 vezes | De 4 a 8 vezes | De 9 a 12 vezes | Até 3 vezes | Até 3 vezes | De 4 a 8 vezes | Até 3 vezes | De 4 a 8 vezes | Até 3 vezes | De 4 a 8 vezes |
| index | 1 | 1 | 1 | 1 | 27 | 3 | 7 | 8 | 9 | 3 |
# Analise perfil profissional autônomo ou não
df3.groupby(['idade', 'autonomo'])['index'].count().reset_index().transpose()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
|---|---|---|---|---|---|---|---|---|---|---|
| idade | + 41 anos | Entre 16 a 18 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 31 a 40 anos | Entre 31 a 40 anos |
| autonomo | Sim | Sim | Não | Sim | Talvez | Não | Sim | Talvez | Não | Sim |
| index | 3 | 1 | 4 | 18 | 8 | 2 | 10 | 3 | 4 | 8 |
# Analise se uma liderança afeta o desemprenho profissional ou não
df3.groupby(['idade', 'lideranca'])['index'].count().reset_index().transpose()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| idade | + 41 anos | + 41 anos | Entre 16 a 18 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 31 a 40 anos | Entre 31 a 40 anos | Entre 31 a 40 anos |
| lideranca | Em partes | Sim | Em partes | Em partes | Não | Sim | Em partes | Não | Sim | Em partes | Não | Sim |
| index | 1 | 2 | 1 | 9 | 6 | 15 | 5 | 1 | 9 | 4 | 3 | 5 |
# Análise de conformidade do salário em relação aos serviço prestado
df3.groupby(['idade', 'conf_salario'])['index'].count().reset_index().transpose()
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| idade | + 41 anos | + 41 anos | Entre 16 a 18 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 19 a 25 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 26 a 30 anos | Entre 31 a 40 anos | Entre 31 a 40 anos |
| conf_salario | Não | Sim | Não | Estou desempregado | Não | Sim | Estou desempregado | Não | Sim | Não | Sim |
| index | 2 | 1 | 1 | 4 | 15 | 11 | 1 | 11 | 3 | 7 | 5 |
# Analise estastica
expectativa_salarial = df3.groupby(['idade'])['espectativa'].describe().reset_index()
expectativa_salarial = expectativa_salarial.drop(columns=['std', '25%', '50%', '75%'])
expectativa_salarial
| idade | count | mean | min | max | |
|---|---|---|---|---|---|
| 0 | + 41 anos | 3.0 | 6666.67 | 5000.0 | 10000.0 |
| 1 | Entre 16 a 18 anos | 1.0 | 2000.00 | 2000.0 | 2000.0 |
| 2 | Entre 19 a 25 anos | 30.0 | 6526.67 | 2000.0 | 15000.0 |
| 3 | Entre 26 a 30 anos | 14.0 | 6071.43 | 2000.0 | 12000.0 |
| 4 | Entre 31 a 40 anos | 9.0 | 6388.89 | 2500.0 | 15000.0 |